#include <decorator_pattern.h>
#include <iostream>

using namespace std;

void DecRectangle::draw()
{
    cout << "Shape : Rectangle" << endl;
}

void DecCircle::draw()
{
    cout << "Shape : Circle" << endl;
}

DecShapeDecorator::DecShapeDecorator(DecShape* decoratedShape)
{
    this->decoratedShape = decoratedShape;
}

void DecShapeDecorator::draw()
{
    this->decoratedShape->draw();
}

RedDecShapeDecorator::RedDecShapeDecorator(DecShape* decoratedShape) : DecShapeDecorator(decoratedShape) {}

void RedDecShapeDecorator::draw()
{
    decoratedShape->draw();
    setRedBorder();
}

void RedDecShapeDecorator::setRedBorder()
{
    cout << "Border Color : Red" << endl;
}
